package org.jeecg;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

import org.jeecgframework.codegenerate.generate.impl.CodeGenerateOneToMany;
import org.jeecgframework.codegenerate.generate.pojo.onetomany.MainTableVo;
import org.jeecgframework.codegenerate.generate.pojo.onetomany.SubTableVo;

/**
 * 代码生成器入口【一对多】
 * 【 GUI模式已弃用，请转移Online模式进行代码生成 】
 * @Author 张代浩
 * @site www.jeecg.org
 * 
 */
public class JeecgOneToMainUtil {

	/**
	 * 一对多(父子表)数据模型，生成方法
	 * @param args
	 */
	public static void main(String[] args) {
		/*//第一步：设置主表配置
		MainTableVo mainTable = new MainTableVo();
		mainTable.setTableName("jeecg_order_main");//表名
		mainTable.setEntityName("GuiTestOrderMain");	 //实体名
		mainTable.setEntityPackage("gui");	 //包名
		mainTable.setFtlDescription("GUI订单管理");	 //描述
		
		//第二步：设置子表集合配置
		List<SubTableVo> subTables = new ArrayList<SubTableVo>();
		//[1].子表一
		SubTableVo po = new SubTableVo();
		po.setTableName("jeecg_order_customer");//表名
		po.setEntityName("GuiTestOrderCustom");	    //实体名
		po.setEntityPackage("gui");	        //包名
		po.setFtlDescription("客户明细");       //描述
		//子表外键参数配置
		*//*说明:
		 * a) 子表引用主表主键ID作为外键，外键字段必须以_ID结尾;
		 * b) 主表和子表的外键字段名字，必须相同（除主键ID外）;
		 * c) 多个外键字段，采用逗号分隔;
		*//*
		po.setForeignKeys(new String[]{"order_id"});
		subTables.add(po);
		//[2].子表二
		SubTableVo po2 = new SubTableVo();
		po2.setTableName("jeecg_order_ticket");		//表名
		po2.setEntityName("GuiTestOrderTicket");			//实体名
		po2.setEntityPackage("gui"); 				//包名
		po2.setFtlDescription("产品明细");			//描述
		//子表外键参数配置
		*//*说明:
		 * a) 子表引用主表主键ID作为外键，外键字段必须以_ID结尾;
		 * b) 主表和子表的外键字段名字，必须相同（除主键ID外）;
		 * c) 多个外键字段，采用逗号分隔;
		*//*
		po2.setForeignKeys(new String[]{"order_id"});
		subTables.add(po2);
		mainTable.setSubTables(subTables);
		
		//第三步：一对多(父子表)数据模型,代码生成
		try {
			new CodeGenerateOneToMany(mainTable,subTables).generateCodeFile(null);
		} catch (Exception e) {
			e.printStackTrace();
		}*/
		/*List<Map<String,Object>> mapList = new ArrayList<>();
		Map<String,Object> map1 = new TreeMap<>();
		map1.put("name","张三");
		map1.put("zjjg","北方宏大");
		map1.put("id","21");

		Map<String,Object> map2 = new TreeMap<>();
		map2.put("name","李四");
		map2.put("zjjg","北方宏大");
		map2.put("id","31");
		Map<String,Object> map3 = new TreeMap<>();
		map3.put("name","胧车");
		map3.put("zjjg","畅泽");
		map3.put("id","12");
		Map<String,Object> map4 = new TreeMap<>();
		map4.put("name","天天");
		map4.put("zjjg","畅泽");
		map4.put("id","55");
		Map<String,Object> map5 = new TreeMap<>();
		map5.put("name","546");
		map5.put("zjjg","力元");
		map5.put("id","546");

		mapList.add(map1);
		mapList.add(map2);
		mapList.add(map3);
		mapList.add(map4);
		mapList.add(map5);

		Map<String,List<Map<String,Object>>> backMap = groupByList(mapList);
		for(String key : backMap.keySet()){
			System.err.println("key= "+ key + " and value= " + backMap.get(key));
		}*/

	}

	/*public static Map<String,List<Map<String,Object>>> groupByList(List<Map<String,Object>> mapList){
		Map<String,List<Map<String,Object>>> backmap = new TreeMap<>();
		for(Map<String,Object> son : mapList){
			String key = son.get("zjjg").toString();
			if(backmap.containsKey(key)) {
				//map中存在以此id作为的key，将数据存放当前key的map中
				backmap.get(key).add(son);
			} else {
				//map中不存在以此id作为的key，新建key用来存放数据
				List<Map<String,Object>> sonList = new java.util.ArrayList<>();
				sonList.add(son);
				backmap.put(key, sonList);
			}
		}
		return backmap;
	}*/
}
